/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package BeansGerenciaveis;

import DAO.ImagemDao;
import DAO.NoticiaDAO;
import bean.Imagem;
import bean.Noticia;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Serializable;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import org.apache.commons.io.IOUtils;
import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.UploadedFile;

/**
 *
 * @author jorgepereira
 */
@ManagedBean
@SessionScoped
public class NoticiaBean implements Serializable{

    /**
     * Creates a new instance of NoticiaBean
     */
    Noticia noticia;

    public NoticiaBean() {
        this.noticia = new Noticia();
    }

    public Noticia getNoticia() {
        return noticia;
    }

    public void setNoticia(Noticia noticia) {
        this.noticia = noticia;
    }

    public void upload(FileUploadEvent event) {
        FacesMessage msg = new FacesMessage("Success! ", event.getFile().getFileName() + " is uploaded.");
        FacesContext.getCurrentInstance().addMessage(null, msg);
        // Do what you want with the file        
        System.out.println(event.getFile().getFileName());
        UploadedFile uploadedFile = event.getFile();

        if (new ImagemDao().validarCadastroImagem(uploadedFile.getFileName())) {
            System.out.println("Não existem imagens com esse nome cadastrado!");
            Imagem img = new Imagem();
            if(uploadedFile.getContents() != null && uploadedFile.getContents().length > 0){
                System.out.println("Conteudo não é nulo e nem vazio!");
            }
            
            
              
                int read = 0;
                byte[] bytes = new byte[1024];
                
            try {
                bytes = IOUtils.toByteArray(uploadedFile.getInputstream());
                img.setConteudo(bytes);
                
            } catch (IOException ex) {
                Logger.getLogger(NoticiaBean.class.getName()).log(Level.SEVERE, null, ex);
            }
                
            
            //img.setConteudo(uploadedFile.getContents());
            img.setFormato(uploadedFile.getContentType());
            System.out.println("Formato:" + img.getFormato());
            img.setNome(uploadedFile.getFileName() + new Date());
            System.out.println("Nome Arquivo:" + img.getNome());
            System.out.println("Arquivo: " + img.getConteudo().length);
            this.noticia.setImagem(img);
            
            

            FacesContext facesContext = FacesContext.getCurrentInstance();
            facesContext.addMessage(null, new FacesMessage("Aquivo Recebido com Sucesso", ""));
        } else {
            FacesContext facesContext = FacesContext.getCurrentInstance();
            facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Não foi possivel fazer upload:", "Já existe uma imagem cadastrada com esse nome! "));
        }

    }

    public void doUpload(FileUploadEvent fileUploadEvent) throws IOException {
        UploadedFile uploadedFile = fileUploadEvent.getFile();

        if (uploadedFile.getContents().length > 0) {

            if (new ImagemDao().validarCadastroImagem(uploadedFile.getFileName())) {
                Imagem img = new Imagem();
                img.setConteudo(uploadedFile.getContents());
                img.setFormato(uploadedFile.getContentType());
                System.out.println("Formato:" + img.getFormato());
                img.setNome(uploadedFile.getFileName() + new Date());
                System.out.println("Nome Arquivo:" + img.getNome());
                System.out.println("Tamanho: " + img.getConteudo().length);
                this.noticia.setImagem(img);

                FacesContext facesContext = FacesContext.getCurrentInstance();
                facesContext.addMessage(null, new FacesMessage("Aquivo Recebido com Sucesso", ""));
            } else {
                FacesContext facesContext = FacesContext.getCurrentInstance();
                facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Não foi possivel fazer upload:", "Já existe uma imagem cadastrada com esse nome! "));
            }

        } else {
            FacesContext facesContext = FacesContext.getCurrentInstance();
            facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Não foi selecionado um arquivo para upload", ""));

        }

    }

    public void cadastrarNoticia() {

        if (new NoticiaDAO().cadastrar(noticia) == true) {
            FacesContext facesContext = FacesContext.getCurrentInstance();
            facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Notícia cadastrada com Sucesso", ""));
            this.noticia = new Noticia();
        } else {
            FacesContext facesContext = FacesContext.getCurrentInstance();
            facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Atenção", "Ocorreu um erro e não foi possível cadastrar a notícia"));
        }

    }

}
